﻿/*
 * 在这个项目中，您可以了解到：
 * 如何使用 while 语句
 * 如何使用 for 语句
 * 如何使用 do-while 语句
 */
using System;

namespace Be迭代语句
{
    class Program
    {
        static void Main(string[] args)
        {
            {
                int i = 0;
                /*
                 * 迭代语句一般会被重复执行多次，
                 * 但也可能只执行一次，或一次都不执行。
                 * 
                 * 这句 while 语句在每次迭代时都会判断是否满足 i < 10 ，
                 * 如果满足，则执行循环体中的内容，即输出 "while" 并让 i 自增，
                 * 如果不满足，则停止迭代，执行后续代码。
                 */
                while (i < 10)
                {
                    Console.WriteLine($"while {i}");
                    i++;
                }    
            }

            /*
             * 这句 for 语句可以完美替换上述全部语句。
             * 
             * 这句语句是这样执行的：
             * 1、执行第一个分号前的 int i = 0
             * 
             * 2、判断两个分号之间的 i < 10 是否成立，成立则继续执行，不成立则跳到第 5 步
             * 3、执行循环体，输出 "for"
             * 4、执行第二个分号后的 i++ ，回到第 2 步
             * 
             * 5、结束迭代，执行后续代码
             * 
             * for 语句的每一项都可以不填，如果第二项不填，则为无限循环。
             */
            for (int i = 0; i < 10; i++)
                Console.WriteLine($"for {i}");

            /*
             * 这里引入一个新类型 bool ，它可以表示“真”或“假”。
             * 比如 1 == 2 结果为 false ， 1 < 2 结果为 true 。
             * 先前的 if-else 语句和迭代语句中，使用的条件实际上都是一个 bool 值。
             */
            bool aFalseValue = false;
            /*
             * do-while 在首次迭代的时候不进行判断，因此如下代码也会输出一次。
             */
            do
            {
                Console.WriteLine("do-while");
            } while (aFalseValue);

            /*
             * foreach-in 也属于迭代语句，但要配合数组、列表等可枚举类型使用，暂时不提。
             */
        }
    }
}
